_____ _    _         _____  _____ _   _          _____   _____  
    / ____| |  | |  /\   |  __ \|_   _| \ | |   /\   / _ \ \ / / _ \ 
   | |  __| |  | | /  \  | |__) | | | |  \| |  /  \ | | | \ V / | | |
   | | |_ | |  | |/ /\ \ |  _  /  | | | . ` | / /\ \| | | |> <| | | |
   | |__| | |__| / ____ \| | \ \ _| |_| |\  |/ ____ \ |_| / . \ |_| |
    \_____|\____/_/    \_\_|  \_\_____|_| \_/_/    \_\___/_/ \_\___/ 
                                                                     
                    ./Guarina0x0
Titulo: HackTheBox - Horizontall
Fecha: 14-09-2021
Descripcion: Enumeracion - Fuzzing - Strapi - CVE

Hack The Box - Horizontall Writeup

## Ping:

ping -c1 10.10.11.105

Mediante el comando ping vamos a trazar una ruta ICMP para ver si la maquina esta activa y ante que tipo de sistema operativo estamos

Podemos ver que la respuesta del ttl es 63 , el TTL en maquinas Linux es 64 y en maquinas Windows 128 , en este caso es 63 porque pasa por un nodo intermediario.

## Enumeracion :

Ahora vamos a proceder a ver que servicios tiene esta maquina abiertos para ello vamos a realizar una enumeracion de puertos:

Mediante el parametro --min-rate 5000 va a emitir paquetes no mas lento que 5000 paquetes por segundo

  • Puerto 22 SSH
  • Puerto 80 HTTP
  • Podemos ver que tenemos el servicio web abierto , mediante la herramienta WhatWeb vamos a ver si estamos ante algun gestor de contenido

    Podemos ver que se esta aplicando Virtual Hosting a horizontall.htb , por lo que vamos a tener que ponerlo en nuestro /etc/hosts

    Ahora una vez que hemos configurado el Virtual Hosting , vamos a realizar un escaneo mas exhaustivo con Nmap

    ## Reconocimiento Web:

    Vamos abrir el dominio horizontall.htb y vamos a inspeccionar la pagina en busca de directorios web potenciales o pistas

    Vamos a realizar Fuzzing mediante la herramienta Wfuzz , en busqueda de directorios web potenciales

    Tras un tiempo esperando , no nos reporta nada , por lo que vamos aplicar fuzzing buscando subdominios del dominio principal , para ello vamos a usar un diccionario de SecLists

    Tras un tiempo , nos reporta un posible subdominio potencial , vamos a guardar dicho subdominio en nuestro /etc/hosts

    Si abrimos dicho subdominio , no nos reporta gran cosa , por lo que haremos fuzzing a el subdominio buscando directorios web

    Nos reporta varios directorios web potenciales que iremos investigando:

  • /reviews
  • /users
  • /admin
  • Si abrimos el directorio /reviews , vamos a ver que nos reporta informacion en Json , pero poca cosa

    Si procedemos abrir el directorio web /users , es otro Json que no nos reporta informacion

    Ahora si procedemos abrir el directorio web /admin que en principio parece el mas potencial , nos vamos a encontrar ante un panel de inicio de sesion de la herramienta Strapi

    Strapi es un CMS basado en Node.js para todas las necesidades de API y gestion de contenidos de los desarrolladores.

    Como no tenemos credenciales , podemos intentar buscar las credenciales por defecto , pero no funciona , tras mas investigacion podemos darnos cuenta de que cuenta con un CVE.

    El CVE esta basado en la version 3.0.0-beta.17.4 , para obtener la version de Strapi vamos a tener que realizar un Curl

    Podemos ver que estamos ante la version vulnerable de Strapi , por lo que podemos descargarnos el Exploit de exploit-db https://www.exploit-db.com/exploits/50239

    Este exploit nos permite un RCE (Ejecucion Remota de Comandos) , sin tener una previa auntentificacion del servicio de Strapi

    ## Exploit CVE 50239:

    Podemos inspeccionar el exploit para comprender como funciona y que parametros necesitamos pasarle para su ejecucion

    Vamos a tener que ejecutarlo con python 3 y le debemos pasar el dominio

    sudo python3 50239.py http://api-prod.horizontall.htb/

    Tras su ejecucion nos devuelve un correo admin@horizontall.htb , un usuario y una contraseña para el panel de inicio de sesion y un token JSON que va a ser muy importante

    Ahora podemos iniciar sesion en el panel de Strapi , como Administrador y investigar si hay alguna forma de acceder al servidor

    Podemos observar que no podemos hacer gran cosa dentro del Panel , por lo que si tenemos ejecucion remota con el exploit , podemos crear una shell reversa , enviarsela al servidor y ejecutarla y que se conecte a nuestro equipo de atacante

    Primero crearemos un fichero llamado "index.html" y dentro de el realizaremos un pequeño script en Bash que nos entable una Shell Reversa a nuestro equipo atacante

    Una vez creado vamos a iniciar un servidor simple http mediante Python y vamos a realizar un curl para descargar el index.html y ejecutarlo mediante Bash

    Mientras tanto nos debemos poner a la escucha mediante Netcat por el puerto que hemos configurado en la shell reversa y nos dara el acceso

    Una vez que tengamos acceso a la maquina , ya podriamos visualizar el Flag del Usuario y nos quedaria solo escalar privilegios

    ## Escalada de Privilegios:

    Ahora vamos a tener que buscar permisos SUID o algun tipo de proceso o ejecucion que nos permita escalar privilegios para poder ser usuario Root

    Si investigamos la maquina podemos ver que tenemos Laravel trabajando en el servidor , existe un exploit que nos permite realizar un port forwarding a nuestra maquina atacante y ejecutar una shell con permisos de Root

    Para ello vamos a realizar el port forwarding mediante el servicio SSH a nuestra maquina, empezaremos creando una llave publica y privada rsa

    A esa llave que hemos creado le añadiremos un NetCat con el puerto que queremos que nos habra

    Realizaremos el Port Forwarding mediante SSH , especificando el puerto 8000 de nuestra maquina atacante y la nuestra direccion IP local

    Ya podemos observar que tenemos el servicio lavarel que corre en la maquina victima , corriendo en nuestra maquina atacante

    Solo nos queda ejecutar el Exploit , que podemos encontrar en GitHub el PoC https://github.com/nth347/CVE-2021-3129_exploit

    Ejecutamos los comandos que nos ofrece la prueba de concepto y le pasaremos como parametro que nos ejecute el Script que nos muestre la flag del usuario Root

    Y ya tendriamos la maquina de Hack The Box Horizontall Explotada , con una dificultad Facil , que nos ha llevado varios dias de investigacion y probar el funcionamiento de las diferentes vulnerabilidades que existian!!